2

对象sessionStorage是一次会话内的存储,它主要用于在一次会话内的多个页面内共享数据。

如下案例使用了vue.js,你需要了解vue.js。此案例会有两个文件:

touch a.html b.html

文件a.html内容为:

    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    <div id="app">
        <span>{{count}}</span><button @click="inc">+</button>
        <a href="b.html">go to B</a>
    </div>
    <script>
        // var s= localStorage
        var s= sessionStorage
        new Vue({
            el:'#app',
            data(){
                console.log(s.count)
                if (!s.count || (isNaN(s.count))){
                    s.count = 0
                    return {count:0}
                }
                else
                    return {count:s.count}
            },
            methods:{
                inc:function(){
                    this.count++
                    s.count = this.count
                }
            }
        })
    </script>
    

此文件的按钮点击一次,为span标签的值加一,并且设置新值到sessionStorage.count内。

文件b.html则负责显示当前的sessionStorage.count值:

    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    <div id="app">
        <span>page A 's session value {{count}}</span>
        <a href="a.html">Back to A</a>
    </div>
    <script>
        // var s= localStorage
        var s= sessionStorage
        new Vue({
            el:'#app',
            data(){
                return {count:s.count}
            }
        })
    </script>
    

安装并启动http server

npm i http-server -g
http-server

访问localhost:8080/a.html ,我们点击按钮设置sessionStorage.count之后,导航到b页面,会发现显示的值是a页面内设置的值。这说明在同一个会话内的页面间是可以通过sessionStorage来共享数据的。

如果打开一个新的页面,在访问b,显示的值就不能和a页面设置的相同,这是因为新开的页面和原来的a页面的会话并不一致。如果需要在这样的情况下也可以访问,那么需要把sessionStorage改为localStorage。你不妨试试。


Reco
4.6k 声望541 粉丝

敢作敢为